草庐IT

Java TLS-PSK 套接字

全部标签

c++ - 从不同线程写入 boost::asio 套接字

在我们的应用程序中,我们使用Boost库(以及用于网络通信的ASIO)。最近,我们发现如果我们通过同一个套接字从不同线程发送数据,我们的客户端应用程序将接收到垃圾数据。突出问题的小测试:#include#include#includevoidsend_routine(boost::shared_ptrs,charc){std::vectordata(15000,c);data.push_back('\n');for(inti=0;i(newtcp::socket(io_service));socket->connect(*iterator);boost::threadt1(send_r

C++ UDP套接字数据包排队

我使用同一个UDP套接字来发送和接收数据。我想知道DGRAM套接字的数据包排队是否已经存在,或者我们是否必须单独处理它。如果用户代码必须处理排队,它是如何完成的?我们是否有单独的线程来为套接字从recvfrom并将数据包放入reciver_queue并从另一个sending_queue发送到?示例代码绝对很棒。感谢您的帮助。 最佳答案 有一个数据包队列。但是,当数据包队列已满时,UDP数据包开始被丢弃。当它们被丢弃时,它们将永远丢失,因此请确保您继续阅读数据! 关于C++UDP套接字数据

c++ - 如何通过 C++ 中的升压套接字发送 ostream?

我在使用protobuf进行进程间通信时遇到了一些问题。Protobuf允许一组序列化格式:SerializeToArray(void*data,intsize):boolSerializeToCodedStream(google::protobuf::io::CodeOutputStream*output):boolSerializeToFileDescriptor(intfile_descriptor):boolSerializeToOstream(ostream*output)我的问题是,我不知道如何将它与我正在使用的boostasio套接字一起使用,因为我实现了它们来发送字符串

C++套接字编程: maximize throughput/bandwidth on localhost (I only get 3 Gbit/s instead of 23GBit/s)

我想创建一个C++服务器/客户端,以最大化本地主机上TCP套接字通信的吞吐量。作为准备,我使用了iperf找出我的i7MacBookPro上的最大带宽是多少。------------------------------------------------------------ServerlisteningonTCPport5001TCPwindowsize:256KByte(default)------------------------------------------------------------[4]local127.0.0.1port5001connectedwith

c++ - 套接字发送接收函数

我使用以下代码行创建了一个套接字。现在我像这样更改套接字的值m_Socket++;即使现在sendrecvsocket函数也能成功,不会抛出SOCKET_ERROR。我预计它一定会抛出错误。我是不是做错了什么。structsockaddr_inServerSock;//套接字地址结构绑定(bind)要监听的端口号char*localIP;SOCKETSocServer;//ToSetupthesockaddrstructureServerSock.sin_family=AF_INET;ServerSock.sin_addr.s_addr=INADDR_ANY;ServerSock.si

c++ - 通过 C 套接字发送结构

我正在构建一个UDP聊天应用程序。通过C套接字发送C结构并在另一端memset接收数据是否安全?struct中的所有数据都使用memset进行了空填充,因此我假设struct的大小始终不变。我可能会遇到什么问题?更有经验的程序员如何处理这个问题? 最佳答案 是的,它是安全的,但我们应该首先警告这一点。如果您在不同的平台之间传递它,您可能会遇到问题然后您需要担心字节顺序/打包(可能还有许多其他问题)。话虽这么说,如果您不知道如何执行这些操作,那么假设您将按照发送它的相同顺序可靠地接收struct是不安全的。

c++ - 将套接字路由到另一个端口

我有一个系统,我想监听一个套接字并等待客户端连接,然后将连接传递给另一个应用程序,我将在连接建立后立即启动该应用程序。我无法控制这个其他应用程序,只能设置它将监听的端口,但我想为每个新客户端设置一个进程。这就是我想要做的:我一直在寻找解决方案,但我想我没有正确的术语,但我设法在RichardStevens的“Unix网络编程”中找到了一些关于AF_ROUTE系列的内容可以与SOCK_RAW组合以将连接路由到另一个IP和端口的套接字。但是关于howtousethisflag的文档太少了并且似乎需要super用户权限(我想避免)。也许有更简单的解决方案,但我可能使用了错误的术语。清楚我想做

c++ - pselect 阻塞,即使数据可用于在套接字上读取

我在从POSIX套接字(RHEL6x86_64C++icpc)读取时遇到间歇性延迟。我的代码被设计成用户可以提供一个绝对的timespec截止日期(相对于一个相对超时)来跨多个recv调用使用。在尝试调用recv之前,我调用pselect以确保数据可供读取。这通常按预期工作(将等待数据但不会超过截止日期,如果数据可用于recv,则不会引入明显的延迟)。但是,我有一个用户可以定期(约50%的时间)让他的应用程序进入一种状态,即使套接字上有数据,选择block也会阻塞约400-500毫秒。如果我观察/proc/net/tcp,我可以看到数据在RX队列中可用,我可以看到应用程序慢慢地从队列中

python - 无法连接到python中的抽象unix套接字

我有一个用c++编写的服务器,它创建并绑定(bind)到一个抽象的unix套接字,其namespace地址为"\0hidden"。我还有一个用C++编写的客户端,该客户端可以成功连接到我的服务器。顺便说一句,我没有这个客户端的源代码。现在我正在尝试使用我用python编写的客户端连接到我的服务器,但没有成功。我不明白为什么我的python客户端不工作。我正在发布我的服务器和客户端代码的相关部分。服务器#defineUD_SOCKET_PATH"\0hidden"structsockaddr_unaddr;intfd,cl;if((fd=socket(AF_UNIX,SOCK_STREA

c++ - 如何使用 boost::asio 连接到 unix 域套接字?

我想通过指定套接字端点的路径名来创建并连接到SOCK_SEQPACKET类型的unix域套接字,但这无法在中编译boost::asiov1.60:usingnamespaceboost::asio::generic;seq_packet_protocolproto{AF_UNIX,IPPROTO_SCTP};//SOCK_SEQPACKETseq_packet_protocol::socketsock(io_service,proto);boost::asio::local::basic_endpointep("/tmp/socket");sock.connect(ep);//does